<?xml version='1.0' encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <link href="cpip.css" rel="stylesheet" type="text/css" />
    <title>File: /Users/paulross/dev/linux/linux-3.13/include/linux/task_io_accounting.h</title>
  </head>
  <body>
    <h1>File: /Users/paulross/dev/linux/linux-3.13/include/linux/task_io_accounting.h</h1>
    <p>Green shading in the line number column
means the source is part of the translation unit, red means it is conditionally excluded.
Highlighted line numbers link to the translation unit page. Highlighted macros link to
the macro page.</p>
    <pre><a name="1" /><span class="True">       1:</span> <span class="k">/*</span>
<a name="2" /><span class="True">       2:</span> <span class="k"> * task_io_accounting: a structure which is used for recording a single task&apos;s</span>
<a name="3" /><span class="True">       3:</span> <span class="k"> * IO statistics.</span>
<a name="4" /><span class="True">       4:</span> <span class="k"> *</span>
<a name="5" /><span class="True">       5:</span> <span class="k"> * Don&apos;t include this header file directly - it is designed to be dragged in via</span>
<a name="6" /><span class="True">       6:</span> <span class="k"> * sched.h.</span>
<a name="7" /><span class="True">       7:</span> <span class="k"> *</span>
<a name="8" /><span class="True">       8:</span> <span class="k"> * Blame Andrew Morton for all this.</span>
<a name="9" /><span class="True">       9:</span> <span class="k"> */</span>
<a name="10" /><span class="True">      10:</span> 
<a name="11" /><span class="True">      11:</span> <span class="m">struct</span> <span class="b">task_io_accounting</span> <span class="f">{</span>
<a name="12" /><span class="True">      12:</span> <span class="f">#</span><span class="n">ifdef</span> <a href="cpu.c_macros_ref.html#_Q09ORklHX1RBU0tfWEFDQ1RfMA__"><span class="b">CONFIG_TASK_XACCT</span></a>
<a name="13" /><span class="True">      13:</span>     <span class="k">/* bytes read */</span>
<a name="14" /><span class="True">      14:</span>     <span class="b">u64</span> <span class="b">rchar</span><span class="f">;</span>
<a name="15" /><span class="True">      15:</span>     <span class="k">/*  bytes written */</span>
<a name="16" /><span class="True">      16:</span>     <span class="b">u64</span> <span class="b">wchar</span><span class="f">;</span>
<a name="17" /><span class="True">      17:</span>     <span class="k">/* # of read syscalls */</span>
<a name="18" /><span class="True">      18:</span>     <span class="b">u64</span> <span class="b">syscr</span><span class="f">;</span>
<a name="19" /><span class="True">      19:</span>     <span class="k">/* # of write syscalls */</span>
<a name="20" /><span class="True">      20:</span>     <span class="b">u64</span> <span class="b">syscw</span><span class="f">;</span>
<a name="21" /><span class="True">      21:</span> <span class="f">#</span><span class="n">endif</span> <span class="k">/* CONFIG_TASK_XACCT */</span>
<a name="22" /><span class="True">      22:</span> 
<a name="23" /><span class="True">      23:</span> <span class="f">#</span><span class="n">ifdef</span> <a href="cpu.c_macros_ref.html#_Q09ORklHX1RBU0tfSU9fQUNDT1VOVElOR18w"><span class="b">CONFIG_TASK_IO_ACCOUNTING</span></a>
<a name="24" /><span class="True">      24:</span>     <span class="k">/*</span>
<a name="25" /><span class="True">      25:</span> <span class="k">     * The number of bytes which this task has caused to be read from</span>
<a name="26" /><span class="True">      26:</span> <span class="k">     * storage.</span>
<a name="27" /><span class="True">      27:</span> <span class="k">     */</span>
<a name="28" /><span class="True">      28:</span>     <span class="b">u64</span> <span class="b">read_bytes</span><span class="f">;</span>
<a name="29" /><span class="True">      29:</span> 
<a name="30" /><span class="True">      30:</span>     <span class="k">/*</span>
<a name="31" /><span class="True">      31:</span> <span class="k">     * The number of bytes which this task has caused, or shall cause to be</span>
<a name="32" /><span class="True">      32:</span> <span class="k">     * written to disk.</span>
<a name="33" /><span class="True">      33:</span> <span class="k">     */</span>
<a name="34" /><span class="True">      34:</span>     <span class="b">u64</span> <span class="b">write_bytes</span><span class="f">;</span>
<a name="35" /><span class="True">      35:</span> 
<a name="36" /><span class="True">      36:</span>     <span class="k">/*</span>
<a name="37" /><span class="True">      37:</span> <span class="k">     * A task can cause &quot;negative&quot; IO too.  If this task truncates some</span>
<a name="38" /><span class="True">      38:</span> <span class="k">     * dirty pagecache, some IO which another task has been accounted for</span>
<a name="39" /><span class="True">      39:</span> <span class="k">     * (in its write_bytes) will not be happening.  We _could_ just</span>
<a name="40" /><span class="True">      40:</span> <span class="k">     * subtract that from the truncating task&apos;s write_bytes, but there is</span>
<a name="41" /><span class="True">      41:</span> <span class="k">     * information loss in doing that.</span>
<a name="42" /><span class="True">      42:</span> <span class="k">     */</span>
<a name="43" /><span class="True">      43:</span>     <span class="b">u64</span> <span class="b">cancelled_write_bytes</span><span class="f">;</span>
<a name="44" /><span class="True">      44:</span> <span class="f">#</span><span class="n">endif</span> <span class="k">/* CONFIG_TASK_IO_ACCOUNTING */</span>
<a name="45" /><span class="True">      45:</span> <span class="f">}</span><span class="f">;</span>
<a name="46" /><span class="True">      46:</span> </pre>
  </body>
</html>
